package com.sss.hloster01;

public class Consumer implements Runnable {

//属性
	// 仓库
	private WarehouseStack whStack;
	// 多线程终止采用外部传入停止参数
	private boolean isStopped;

	// 行为
	public void run() {
		// 消费者的业务逻辑处理
		// 消费者负责消费产品
		while (true) {
			synchronized (whStack) {
				// 消费时，判定仓库栈是否为空
				// 如果仓库为空，则当前消费者等待生产
				if (whStack.getSize() == 0) {
					try {
						System.out.println("仓库空，消费者进入仓库的等待状态！！直到生产者将其唤醒");
						whStack.wait();
					} catch (InterruptedException e) {

						e.printStackTrace();
					}
				}
				// 消费一个产品
				Product pro = whStack.pop();
				// 输出信息
				System.out.println("消费者消费产品：" + pro.getProPrice());
				// 消费者消费了产品，仓库则不为空，唤醒生产者可以生产放入产品
				whStack.notifyAll();
			}
			// 休眠500ms
			try {
				Thread.sleep(500);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

	public Consumer(WarehouseStack whStack) {
		super();
		this.whStack = whStack;
	}

}
